/*
 * Copyright 2010 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
/*
 * Warning! This file is generated. Modify at your own risk.
 */

package com.google.api.services.calendar.model;

import com.google.api.client.json.GenericJson;

/**
 * Model definition for CalendarListEntry.
 *
 * <p> This is the Java data model class that specifies how to parse/serialize into the JSON that is
 * transmitted over HTTP when working with the Calendar API. For a detailed explanation see:
 * <a href="http://code.google.com/p/google-api-java-client/wiki/Json">http://code.google.com/p/google-api-java-client/wiki/Json</a>
 * </p>
 *
 * <p>
 * Upgrade warning: starting with version 1.12 {@code getResponseHeaders()} is removed, instead use
 * {@link com.google.api.client.http.json.JsonHttpRequest#getLastResponseHeaders()}
 * </p>
 *
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public final class CalendarListEntry extends GenericJson {

  /**
   * Type of the resource ("calendar#calendarListEntry").
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String kind;

  /**
   * The foreground color of the calendar in the format '#ffffff'. This property supersedes the
   * index-based colorId property. Optional.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String foregroundColor;

  /**
   * The default reminders that the authenticated user has for this calendar.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.util.List<EventReminder> defaultReminders;

  static {
    // hack to force ProGuard to consider EventReminder used, since otherwise it would be stripped out
    // see http://code.google.com/p/google-api-java-client/issues/detail?id=528
    com.google.api.client.util.Data.nullOf(EventReminder.class);
  }

  /**
   * Description of the calendar. Optional. Read-only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String description;

  /**
   * The color of the calendar. This is an ID referring to an entry in the "calendar" section of the
   * colors definition (see the "colors" endpoint). Optional.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String colorId;

  /**
   * Whether the calendar content shows up in the calendar UI. Optional. The default is False.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private Boolean selected;

  /**
   * Title of the calendar. Read-only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String summary;

  /**
   * ETag of the resource.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String etag;

  /**
   * Geographic location of the calendar as free-form text. Optional. Read-only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String location;

  /**
   * The main color of the calendar in the format '#0088aa'. This property supersedes the index-
   * based colorId property. Optional.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String backgroundColor;

  /**
   * The summary that the authenticated user has set for this calendar. Optional.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String summaryOverride;

  /**
   * The time zone of the calendar. Optional. Read-only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String timeZone;

  /**
   * Whether the calendar has been hidden from the list. Optional. The default is False.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private Boolean hidden;

  /**
   * The effective access role that the authenticated user has on the calendar. Read-only. Possible
   * values are: - "freeBusyReader" - Provides read access to free/busy information.  - "reader" -
   * Provides read access to the calendar. Private events will appear to users with reader access,
   * but event details will be hidden.  - "writer" - Provides read and write access to the calendar.
   * Private events will appear to users with writer access, and event details will be visible.  -
   * "owner" - Provides ownership of the calendar. This role has all of the permissions of the
   * writer role with the additional ability to see and manipulate ACLs.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String accessRole;

  /**
   * Identifier of the calendar.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String id;

  /**
   * Type of the resource ("calendar#calendarListEntry").
   * The value returned may be {@code null}.
   */
  public String getKind() {
    return kind;
  }

  /**
   * Type of the resource ("calendar#calendarListEntry").
   * The value set may be {@code null}.
   */
  public CalendarListEntry setKind(String kind) {
    this.kind = kind;
    return this;
  }

  /**
   * The foreground color of the calendar in the format '#ffffff'. This property supersedes the
   * index-based colorId property. Optional.
   * The value returned may be {@code null}.
   */
  public String getForegroundColor() {
    return foregroundColor;
  }

  /**
   * The foreground color of the calendar in the format '#ffffff'. This property supersedes the
   * index-based colorId property. Optional.
   * The value set may be {@code null}.
   */
  public CalendarListEntry setForegroundColor(String foregroundColor) {
    this.foregroundColor = foregroundColor;
    return this;
  }

  /**
   * The default reminders that the authenticated user has for this calendar.
   * The value returned may be {@code null}.
   */
  public java.util.List<EventReminder> getDefaultReminders() {
    return defaultReminders;
  }

  /**
   * The default reminders that the authenticated user has for this calendar.
   * The value set may be {@code null}.
   */
  public CalendarListEntry setDefaultReminders(java.util.List<EventReminder> defaultReminders) {
    this.defaultReminders = defaultReminders;
    return this;
  }

  /**
   * Description of the calendar. Optional. Read-only.
   * The value returned may be {@code null}.
   */
  public String getDescription() {
    return description;
  }

  /**
   * Description of the calendar. Optional. Read-only.
   * The value set may be {@code null}.
   */
  public CalendarListEntry setDescription(String description) {
    this.description = description;
    return this;
  }

  /**
   * The color of the calendar. This is an ID referring to an entry in the "calendar" section of the
   * colors definition (see the "colors" endpoint). Optional.
   * The value returned may be {@code null}.
   */
  public String getColorId() {
    return colorId;
  }

  /**
   * The color of the calendar. This is an ID referring to an entry in the "calendar" section of the
   * colors definition (see the "colors" endpoint). Optional.
   * The value set may be {@code null}.
   */
  public CalendarListEntry setColorId(String colorId) {
    this.colorId = colorId;
    return this;
  }

  /**
   * Whether the calendar content shows up in the calendar UI. Optional. The default is False.
   * The value returned may be {@code null}.
   */
  public Boolean getSelected() {
    return selected;
  }

  /**
   * Whether the calendar content shows up in the calendar UI. Optional. The default is False.
   * The value set may be {@code null}.
   */
  public CalendarListEntry setSelected(Boolean selected) {
    this.selected = selected;
    return this;
  }

  /**
   * Title of the calendar. Read-only.
   * The value returned may be {@code null}.
   */
  public String getSummary() {
    return summary;
  }

  /**
   * Title of the calendar. Read-only.
   * The value set may be {@code null}.
   */
  public CalendarListEntry setSummary(String summary) {
    this.summary = summary;
    return this;
  }

  /**
   * ETag of the resource.
   * The value returned may be {@code null}.
   */
  public String getEtag() {
    return etag;
  }

  /**
   * ETag of the resource.
   * The value set may be {@code null}.
   */
  public CalendarListEntry setEtag(String etag) {
    this.etag = etag;
    return this;
  }

  /**
   * Geographic location of the calendar as free-form text. Optional. Read-only.
   * The value returned may be {@code null}.
   */
  public String getLocation() {
    return location;
  }

  /**
   * Geographic location of the calendar as free-form text. Optional. Read-only.
   * The value set may be {@code null}.
   */
  public CalendarListEntry setLocation(String location) {
    this.location = location;
    return this;
  }

  /**
   * The main color of the calendar in the format '#0088aa'. This property supersedes the index-
   * based colorId property. Optional.
   * The value returned may be {@code null}.
   */
  public String getBackgroundColor() {
    return backgroundColor;
  }

  /**
   * The main color of the calendar in the format '#0088aa'. This property supersedes the index-
   * based colorId property. Optional.
   * The value set may be {@code null}.
   */
  public CalendarListEntry setBackgroundColor(String backgroundColor) {
    this.backgroundColor = backgroundColor;
    return this;
  }

  /**
   * The summary that the authenticated user has set for this calendar. Optional.
   * The value returned may be {@code null}.
   */
  public String getSummaryOverride() {
    return summaryOverride;
  }

  /**
   * The summary that the authenticated user has set for this calendar. Optional.
   * The value set may be {@code null}.
   */
  public CalendarListEntry setSummaryOverride(String summaryOverride) {
    this.summaryOverride = summaryOverride;
    return this;
  }

  /**
   * The time zone of the calendar. Optional. Read-only.
   * The value returned may be {@code null}.
   */
  public String getTimeZone() {
    return timeZone;
  }

  /**
   * The time zone of the calendar. Optional. Read-only.
   * The value set may be {@code null}.
   */
  public CalendarListEntry setTimeZone(String timeZone) {
    this.timeZone = timeZone;
    return this;
  }

  /**
   * Whether the calendar has been hidden from the list. Optional. The default is False.
   * The value returned may be {@code null}.
   */
  public Boolean getHidden() {
    return hidden;
  }

  /**
   * Whether the calendar has been hidden from the list. Optional. The default is False.
   * The value set may be {@code null}.
   */
  public CalendarListEntry setHidden(Boolean hidden) {
    this.hidden = hidden;
    return this;
  }

  /**
   * The effective access role that the authenticated user has on the calendar. Read-only. Possible
   * values are: - "freeBusyReader" - Provides read access to free/busy information.  - "reader" -
   * Provides read access to the calendar. Private events will appear to users with reader access,
   * but event details will be hidden.  - "writer" - Provides read and write access to the calendar.
   * Private events will appear to users with writer access, and event details will be visible.  -
   * "owner" - Provides ownership of the calendar. This role has all of the permissions of the
   * writer role with the additional ability to see and manipulate ACLs.
   * The value returned may be {@code null}.
   */
  public String getAccessRole() {
    return accessRole;
  }

  /**
   * The effective access role that the authenticated user has on the calendar. Read-only. Possible
   * values are: - "freeBusyReader" - Provides read access to free/busy information.  - "reader" -
   * Provides read access to the calendar. Private events will appear to users with reader access,
   * but event details will be hidden.  - "writer" - Provides read and write access to the calendar.
   * Private events will appear to users with writer access, and event details will be visible.  -
   * "owner" - Provides ownership of the calendar. This role has all of the permissions of the
   * writer role with the additional ability to see and manipulate ACLs.
   * The value set may be {@code null}.
   */
  public CalendarListEntry setAccessRole(String accessRole) {
    this.accessRole = accessRole;
    return this;
  }

  /**
   * Identifier of the calendar.
   * The value returned may be {@code null}.
   */
  public String getId() {
    return id;
  }

  /**
   * Identifier of the calendar.
   * The value set may be {@code null}.
   */
  public CalendarListEntry setId(String id) {
    this.id = id;
    return this;
  }

}
